<!-- ImportQuestionBank.vue -->
<template>
  <div class="import-container">
    <h3>批量导入题库（Excel）</h3>
    <p style="color: #999; margin-bottom: 20px;">
      请使用标准模板上传试题，支持 .xls 和 .xlsx 格式。
      <el-link type="primary" @click="downloadTemplate">下载模板</el-link>
    </p>

    <el-upload
      action="/api/exam/importQuestions"
      :show-file-list="true"
      :on-success="handleSuccess"
      :on-error="handleError"
      :before-upload="beforeUpload"
      :accept="'.xlsx,.xls'"
      :auto-upload="true"
      :headers="{ 'Authorization': 'Bearer ' + $store.getters.token }"
    >
      <el-button size="small" type="success" icon="el-icon-upload">
        选择 Excel 文件
      </el-button>
      <div slot="tip" class="el-upload__tip">
        支持 xls、xlsx 格式，文件大小不超过 10MB
      </div>
    </el-upload>

    <!-- 导入结果反馈 -->
    <div v-if="importResult" class="result-box">
      <el-alert
        :type="importResult.success ? 'success' : 'error'"
        :title="importResult.success ? '导入成功！' : '导入失败：' + importResult.message"
        :description="`共导入 ${importResult.data || 0} 条题目`"
        show-icon
      />
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      importResult: null // 导入结果
    };
  },
  methods: {
    // 上传前校验
    beforeUpload(file) {
      const isExcel = file.type === 'application/vnd.ms-excel' ||
                      file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';

      const isLt10M = file.size / 1024 / 1024 < 10;

      if (!isExcel) {
        this.$message.error('只支持上传 Excel 文件（.xls 或 .xlsx）！');
        return false;
      }
      if (!isLt10M) {
        this.$message.error('文件大小不能超过 10MB！');
        return false;
      }

      return true;
    },

    // 成功回调
    handleSuccess(res, file) {
      if (res.success) {
        this.importResult = res;
        this.$message.success(`题库导入成功，共 ${res.data} 条题目`);
        this.$emit('import-success', res.data); // 可用于刷新列表
      } else {
        this.importResult = res;
        this.$message.error('导入失败：' + (res.message || '未知错误'));
      }
    },

    // 失败回调
    handleError(err, file) {
      this.$message.error('文件上传失败，请检查网络或文件格式');
      console.error('Upload error:', err);
    },

    // 下载模板
    downloadTemplate() {
      const link = document.createElement('a');
      link.href = '/templates/question_template.xlsx'; // 放在 public/templates 下
      link.download = '题库导入模板.xlsx';
      link.click();
    }
  }
};
</script>

<style scoped>
.import-container {
  padding: 20px;
}
.result-box {
  margin-top: 20px;
}
</style>